/*
 * 27-abr-2007 
 */
package futbol.tacticas.concursantes2007.Chuky.chuky.futbolista;

import java.util.ArrayList;


/**
 *
 * @author Joan Crosas
 */
public class InfoPase {
	private static double PESO_TODOS = 0.8;
	private static double PESO_ULTIMO = 0.2;
	
	
	private int muyBueno;
	private int muyMalo;
	
	private int bueno;
	private int malo;
	
	private int numMuyBueno;
	private int numMuyMalo;
	
	private int numBueno;
	private int numMalo;
	
	/**
	 * Une toda las posiciones en una sola, obteniendo como resultado el peor valor de todos
	 * dando mayor peso al ultimo del array
	 * @param infoPosiciones
	 */
	public InfoPase( ArrayList<InfoPosicion> infoPosiciones ) {
		muyBueno = 0;
		muyMalo = 0;
		bueno = 0;
		malo = 0;
		
		numMuyBueno = 0;
		numMuyMalo = 0;
		numBueno = 0;
		numMalo = 0;
		
		for( int i = 0; i < infoPosiciones.size(); i++ ) {
			InfoPosicion infoPos = infoPosiciones.get( i );
			
			if( infoPos.getMuyBueno() > muyBueno ) {
				muyBueno = infoPos.getMuyBueno();
			}
			if( infoPos.getMuyMalo() > muyMalo ) {
				muyMalo = infoPos.getMuyMalo();
			}
			if( infoPos.getBueno() > bueno ) {
				bueno = infoPos.getBueno();
			}
			if( infoPos.getMalo() > malo ) {
				malo = infoPos.getMalo();
			}
			
			if( infoPos.getNumMuyBueno() > numMuyBueno ) {
				numMuyBueno = infoPos.getNumMuyBueno();
			}
			if( infoPos.getNumMuyMalo() > numMuyMalo ) {
				numMuyMalo = infoPos.getNumMuyMalo();
			}
			if( infoPos.getNumBueno() > numBueno ) {
				numBueno = infoPos.getNumBueno();
			}
			if( infoPos.getNumMalo() > numMalo ) {
				numMalo = infoPos.getNumMalo();
			}
		}
		
		// hacemos la media ponderada entre el resultado obtenido y el ultimo
		// se deja parametrizado para poderlo pulir
		if( infoPosiciones.size() > 1 ) {
			InfoPosicion infoPos = infoPosiciones.get( infoPosiciones.size() - 1 );
			muyBueno = (int) ( muyBueno * PESO_TODOS + infoPos.getMuyBueno() * PESO_ULTIMO ) / 2;
			muyMalo = (int) ( muyMalo * PESO_TODOS + infoPos.getMuyMalo() * PESO_ULTIMO ) / 2;
			bueno = (int) ( bueno * PESO_TODOS + infoPos.getBueno() * PESO_ULTIMO ) / 2;
			malo = (int) ( malo * PESO_TODOS + infoPos.getMalo() * PESO_ULTIMO ) / 2;
			
			numMuyBueno = (int) ( numMuyBueno * PESO_TODOS + infoPos.getNumMuyBueno() * PESO_ULTIMO ) / 2;
			numMuyMalo = (int) ( numMuyMalo * PESO_TODOS + infoPos.getNumMuyMalo() * PESO_ULTIMO ) / 2;
			numBueno = (int) ( numBueno * PESO_TODOS + infoPos.getNumBueno() * PESO_ULTIMO ) / 2;
			numMalo = (int) ( numMalo * PESO_TODOS + infoPos.getNumMalo() * PESO_ULTIMO ) / 2;
		}
	}


	public int getBueno() {
		return bueno;
	}


	public void setBueno(int bueno) {
		this.bueno = bueno;
	}


	public int getMalo() {
		return malo;
	}


	public void setMalo(int malo) {
		this.malo = malo;
	}


	public int getMuyBueno() {
		return muyBueno;
	}


	public void setMuyBueno(int muyBueno) {
		this.muyBueno = muyBueno;
	}


	public int getMuyMalo() {
		return muyMalo;
	}


	public void setMuyMalo(int muyMalo) {
		this.muyMalo = muyMalo;
	}


	public int getNumBueno() {
		return numBueno;
	}


	public void setNumBueno(int numBueno) {
		this.numBueno = numBueno;
	}


	public int getNumMalo() {
		return numMalo;
	}


	public void setNumMalo(int numMalo) {
		this.numMalo = numMalo;
	}


	public int getNumMuyBueno() {
		return numMuyBueno;
	}


	public void setNumMuyBueno(int numMuyBueno) {
		this.numMuyBueno = numMuyBueno;
	}


	public int getNumMuyMalo() {
		return numMuyMalo;
	}


	public void setNumMuyMalo(int numMuyMalo) {
		this.numMuyMalo = numMuyMalo;
	}
	
}
